package com.shrct.businessprocess.project;

import com.shrct.businessprocess.project.RCSaleCommissionPayment4SettlementYear;
import com.shrct.businessprocess.project.RCSaleCommissionYearPayment;
import com.shrct.businessprocess.project.impl.RCSaleCommissionPaymentImpl;
import com.shrct.businessprocess.project.proxy.RCSaleCommissionPaymentProxy;
import edu.fudan.mylang.pf.EntityImplementation;
import edu.fudan.mylang.pf.IModelObject;
import java.util.Collection;
import java.util.Date;

@EntityImplementation(implementBy = RCSaleCommissionPaymentImpl.class)
public interface RCSaleCommissionPayment extends IModelObject {
  public abstract RCSaleCommissionYearPayment getYearPayment();
  
  public abstract RCSaleCommissionPayment setYearPayment(final RCSaleCommissionYearPayment yearPayment);
  
  public abstract Date getDate();
  
  public abstract RCSaleCommissionPayment setDate(final Date date);
  
  public abstract Collection<RCSaleCommissionPayment4SettlementYear> getSettlementYearPayments();
  
  public abstract RCSaleCommissionPayment removeFromSettlementYearPayments(final RCSaleCommissionPayment4SettlementYear rCSaleCommissionPayment4SettlementYear);
  
  public abstract RCSaleCommissionPayment removeAllSettlementYearPayments();
  
  public abstract Double getCommissionAmount();
  
  public abstract Double getOverflowCommissionAmount();
  
  public abstract Double getTeamPrizeAmount();
  
  public abstract Double getCom1();
  
  public abstract Double getCom2();
  
  public abstract Double getTax();
  
  public abstract Double getNetCom1();
  
  /**
   * 应付佣金
   */
  public abstract Double getTotalSettlementAmount();
  
  /**
   * 本期佣金
   */
  public abstract Double getTotalAmount();
  
  /**
   * 预计佣金
   */
  public abstract Double getTotalAmountTarget();
  
  /**
   * 已付佣金
   */
  public abstract Double getTotalPaidAmount();
  
  /**
   * 以Std开头的用于自动计算
   */
  public abstract Double getStdCom2Amount();
  
  public abstract Double getStdCom1Amount();
  
  public abstract Double getStdTax();
  
  public abstract Double getStdNetCom1Amount();
  
  /**
   * 本年支付（含本次）
   */
  public abstract Double getTotalUptoTihsTimeAmount();
  
  public abstract void updateDerivedValues();
  
  public abstract void initializePayments4SettlementYear();
  
  public abstract RCSaleCommissionPaymentProxy toProxy();
}
